<?php

class Contatos {

    public function salvaContatos($dados) {
        try {
            $pdo = Conexao::open('site');
            $sql = "INSERT INTO `contatos` (`id_contatos`, `data`, `nome`, `telefone`, `email`, `mensagem`, `lido`) VALUES (NULL, CURRENT_TIMESTAMP, :nome, :telefone, :email, :mensagem, FALSE)";
            $consulta = $pdo->prepare($sql);
            $consulta->bindValue(':nome', $dados['nome'], PDO::PARAM_STR);
            $consulta->bindValue(':telefone', $dados['telefone'], PDO::PARAM_STR);
            $consulta->bindValue(':email', $dados['email'], PDO::PARAM_STR);
            $consulta->bindValue(':mensagem', $dados['mensagem'], PDO::PARAM_STR);
            $consulta->execute();
        } catch (PDOException $e) {
            new Excecao($e);
        }
    }

    public function listar() {
        try {
            $pdo = Conexao::open('site');
            $sql = "SELECT 
                        `contatos`.`id_contatos`,
                        DATE_FORMAT(`contatos`.`data`, '%d/%m/%Y') as data,
                        `contatos`.`nome`,
                        `contatos`.`telefone`,
                        `contatos`.`email`,
                        `contatos`.`mensagem`,
                        CASE WHEN `contatos`.`lido` = true THEN 'Sim' ELSE 'Não' END as lido
                    FROM `contatos` ORDER BY `data` DESC, `id_contatos` DESC";
            $consulta = $pdo->prepare($sql);
            $consulta->execute();
            $retorna = $consulta->fetchAll(PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            new Excecao($e);
            $retorna = false;
        }
        return $retorna;
    }
    
    public function listarMensagem($id_contatos){
         try {
            $pdo = Conexao::open('site');
            $sql = "SELECT 
                        `contatos`.`mensagem`
                    FROM `contatos` WHERE `contatos`.`id_contatos` = :id_contatos";
            $consulta = $pdo->prepare($sql);
            $consulta->bindParam(':id_contatos', $id_contatos, PDO::PARAM_INT);
            $consulta->execute();
            $mensagem = $consulta->fetch(PDO::FETCH_ASSOC);
            $retorna = $mensagem['mensagem'];
            $this->marcaLido($id_contatos, $pdo);
        } catch (PDOException $e) {
            new Excecao($e);
            $retorna = false;
        }
        return $retorna;
    }
    
    public function marcaLido($id_contatos,  $pdo) {
        try {
            $sql = "UPDATE `contatos` SET lido = TRUE WHERE `contatos`.`id_contatos` = :id_contatos";
            $consulta = $pdo->prepare($sql);
            $consulta->bindParam(':id_contatos', $id_contatos, PDO::PARAM_INT);
            $consulta->execute();
        } catch (PDOException $e) {
            new Excecao($e);
        }
    }
}
